package com.ssy.lingxi.marketing.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.SelectItemVO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonAgreeRequest;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonIdReq;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonIdsRequest;
import com.ssy.lingxi.marketing.model.vo.coupon.request.*;
import com.ssy.lingxi.marketing.model.vo.coupon.response.*;

import java.util.List;

/**
 * 商家优惠券服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/6/25
 */
public interface IMerchantCouponService {

    /**
     * 商家优惠劵查询 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantCouponSummaryPageResponse>> pageSummaryMerchantCoupon(MerchantCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核商家优惠劵 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantCouponSubmitAuditPageResponse>> pageSubmitAuditMerchantCoupon(MerchantCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核商家优惠劵(一级) - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantCouponAuditPageResponse>> pageAuditOneMerchantCoupon(MerchantCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核商家优惠劵(二级) - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantCouponAuditPageResponse>> pageAuditTwoMerchantCoupon(MerchantCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠劵执行 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantCouponSubmitPageResponse>> pageSubmitMerchantCoupon(MerchantCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交商家优惠劵 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantCouponExecutePageResponse>> pageExecuteMerchantCoupon(MerchantCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠券详情
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<MerchantCouponResponse> getMerchantCoupon(CommonIdReq request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠券发券详情
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<MerchantCouponGrantResponse> getGrantMerchantCoupon(CommonIdReq request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核商家优惠劵 - 新增
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> addMerchantCoupon(MerchantCouponAddRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核商家优惠劵 - 修改
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> updateMerchantCoupon(MerchantCouponUpdateRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核商家优惠劵 - 删除
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> deleteMerchantCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核商家优惠劵 - 提交审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> submitAuditMerchantCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核商家优惠劵(一级) - 提交审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> auditOneMerchantCoupon(CommonAgreeRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核商家优惠劵(一级) - 批量提交审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> batchAuditOneMerchantCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核商家优惠劵(二级) - 审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> auditTwoMerchantCoupon(CommonAgreeRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核商家优惠劵(二级) - 批量审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> batchAuditTwoMerchantCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交商家优惠劵 - 批量提交
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> submitMerchantCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠劵执行 - 发券
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> grantMerchantCoupon(MerchantCouponGrantRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠劵查询 - 修改
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> modificationMerchantCoupon(MerchantCouponModificationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠劵查询 - 终止
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> stopMerchantCoupon(MerchantCouponOperationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠劵查询 - 重启
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> restartMerchantCoupon(MerchantCouponOperationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠劵查询 - 取消
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> cancelMerchantCoupon(MerchantCouponOperationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 商家优惠劵执行明细 - 查询条件
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<MerchantCouponDetailConditionResponse> getExecuteMerchantCouponDetailCondition(CommonIdReq request);

    /**
     * 商家优惠劵执行明细 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<MerchantCouponDetailPageResponse>> pageExecuteMerchantCouponDetail(MerchantCouponDetailPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 营销活动 - 附属商品 - 选择附属优惠券查询条件
     * @return 返回结果
     */
    Wrapper<List<SelectItemVO>> selectSubsidiaryCouponCondition();

    /**
     * 营销活动 - 附属商品 - 选择优惠券
     *
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<ActivityGoodsCouponResponse>> selectSubsidiaryCouponList(ActivityMerchantSubsidiaryCouponRequest request, UserLoginCacheDTO loginUser);

    /**
     * 营销活动 - 奖品 - 选择0元抵扣券
     *
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<ActivityPrizeCouponResponse>> selectPrizeCouponList(ActivityMerchantPrizeCouponRequest request, UserLoginCacheDTO loginUser);
}
